<?php

/**
 * @author dungdhs@gmail.com
 * @copyright 2012
 */

function category_task(){
  return array(
    'admin' => array(
      'func'  => '_category_admin',
      'perm'  => 'admin category',
      'alias'	=> 'admin/category',
      'title' => 'QL Danh mục'
    ),
    
    'create' => array(
      'func'  => '_category_create',
      'perm'  => 'admin category create',
      'alias'	=> 'admin/category/create',
      'title' => 'Tạo danh mục mới'
    ),
    
    'edit' => array(
      'func'  => '_category_edit',
      'perm'  => 'admin category edit',
      'alias'	=> 'admin/category/edit',
      'title' => 'Sửa nội dung danh mục'
    ),
    
    'delete' => array(
      'func'  => '_category_delete',
      'perm'  => 'admin category delete',
      'alias'	=> 'admin/category/delete',
      'title' => 'Xóa danh mục'
    ),
    
    'detail' => array(
      'func'  => '_category_detail',
      'perm'  => 'view category'
    )
  );
}

function _category_admin(){
  global $smarty, $database;
  
  $cat_type = arg(2);
  
  $res = $database->db_query("SELECT * FROM categories WHERE cat_enabled=1 AND cat_type='%s' ORDER BY cat_weight ASC", $cat_type);
  
  $aCategory= array();
  while ($category = $database->db_fetch_assoc($res)){
    $aCategory[] = $category;
  }
  
  $smarty->assign('aCategory', $aCategory);
  $smarty->assign('cat_type', $cat_type);
  PGTheme::$pageTemplate = 'admin';
  
  return $smarty->fetch('category_admin.tpl');
}

function _category_create(){
	global $smarty, $database, $user;
	
	if (isset($_POST['cat_title'])){
		$cat_type 				= arg(2);
		$cat_title				= PGRequest::getVar('cat_title');
		$cat_weight				= PGRequest::getInt('cat_weight', 0);
		
		if (empty($cat_title)){
			PGTheme::set_error('Bạn vui lòng nhập vào tiêu đề của Category.', 'cat_title');
		}						
		
		$res = $database->db_query("INSERT INTO categories(cat_title, cat_weight, cat_type) VALUES ('%s', %d, '%s')", $cat_title, $cat_weight, $cat_type);
		if ($res){
			PGTheme::set_message('Tạo thành công danh mục <strong><em>"'.$cat_title.'"</em></strong>');
			$cat_id = $database->db_insert_id();
    
	    switch ($cat_type){
	    	case 'product':
					url_set_alias('product/cat/'.$cat_id, $cat_title);
					break; 
				case 'news':
					url_set_alias('category/detail/'.$cat_id, $cat_title);
					break;
	    }
	    
	    cheader('category/create/'.$cat_type);
		}else{
			PGTheme::set_error('Có lỗi xảy ra trong quá trình tạo danh mục. Vui lòng thử lại!');
		}
	}
	
	PGTheme::$pageTemplate = 'admin';
		
	return $smarty->fetch('category_create.tpl');
}

function _category_edit(){
	global $smarty, $database, $user;
	
	$category_id = arg(2, 0);	
	$category = category_load($category_id);
	
	if (!$category){
		PGTheme::set_error('Category bạn cần chỉnh sửa không tồn tại');
		cheader('category/admin/'.$cat_type);
	}
	
	if (isset($_POST['cat_title'])){
		$cat_type 				= $category['cat_type'];
		$cat_title				= PGRequest::getVar('cat_title');
		$cat_weight				= PGRequest::getInt('cat_weight', 0);
		
		$is_error = false;
		if (empty($cat_title)){
			$is_error = true;
			PGTheme::set_error('Bạn vui lòng nhập vào tiêu đề của Category.', 'cat_title');
		}						
		
		if (!$is_error){
			$res = $database->db_query("UPDATE categories SET cat_title='%s', cat_weight=%d WHERE cat_id=%d", $cat_title, $cat_weight, $category_id);
			
			switch ($cat_type){
	    	case 'product':
					url_set_alias('product/cat/'.$category_id, $cat_title);
					break; 
				case 'news':
					url_set_alias('category/detail/'.$category_id, $cat_title);
					break;
	    }
			
			cheader('category/admin/'.$cat_type);
		}
		
		$category['cat_title'] = $cat_title;
		$category['cat_weight'] = $cat_weight;
	}
	
	PGTheme::$pageTemplate = 'admin';
	$smarty->assign('category', $category);
	
	return $smarty->fetch('category_edit.tpl');
}

function _category_delete(){
	global $database;
	
	$category_id = arg(2);
	$category = category_load($category_id);
	if (!$category){
		PGTheme::set_error("Category bạn chọn không tồn tại.");
		cheader('category/admin');
	}
	
	$database->db_query("UPDATE categories SET cat_enabled=0 WHERE cat_id=%d LIMIT 1", $category_id);
	
	PGTheme::set_message("Xóa thành công category <em>\"{$category['cat_title']}\"</em>");
	cheader('category/admin/'.$category['cat_type']);
}

function category_load($category_id){
	global $database;
	
	$res = $database->db_query("SELECT * FROM categories WHERE cat_id=%d", $category_id);
	return $database->db_fetch_assoc($res);
}

function _category_default(){
	global $database, $smarty;
	
	$aCategory = array();
	$res = $database->db_query("SELECT * FROM categories WHERE cat_enabled=1 ORDER BY cat_weight ASC");
	while ($v = $database->db_fetch_assoc($res)){
		$aCategory[] = $v;
	}
	
	PGTheme::$pageTemplate = 'newsmain';
	$smarty->assign('aCategory', $aCategory);
	return $smarty->fetch('category_default.tpl');
}

function _category_detail(){
	global $database, $smarty;
	
	$cat_id = arg(2);
	$cat = __category_get($cat_id);
	
	if (!$cat){
		PGTheme::set_error('Danh mục không tồn tại!');
		cheader('<front>');
	}
	
	theme_title($cat['cat_title']);
	
	$aNews = array();
	
	$res = $database->db_query("SELECT * FROM news WHERE news_cat_id=%d AND news_status=1 AND news_published=1 ORDER BY news_updated DESC", $cat_id);
	while ($news = $database->db_fetch_assoc($res)){
		$aNews[] = $news;
	}
	
	$smarty->assign('aNews', $aNews);
	$smarty->assign('aCat', __category_load('news'));
	
	return $smarty->fetch('homepage.tpl');
}